package icu.qx.pro.service;

import java.util.List;

import icu.qx.pro.domain.ProWorkOrder;
import icu.qx.pro.domain.ProWorkTask;
import org.apache.ibatis.annotations.Param;

/**
 * 生产工单Service接口
 *
 * @author yong
 * @date 2024-06-24
 */
public interface IProWorkOrderService {
    /**
     * 查询生产工单
     *
     * @param workOrderCode 生产工单主键
     * @return 生产工单
     */
    public ProWorkOrder selectProWorkOrderByWorkOrderCode(String workOrderCode);

    /**
     * 查询生产工单列表
     *
     * @param proWorkOrder 生产工单
     * @return 生产工单集合
     */
    public List<ProWorkOrder> selectProWorkOrderList(ProWorkOrder proWorkOrder);

    /**
     * 新增生产工单
     *
     * @param proWorkOrder 生产工单
     * @return 结果
     */
    public int insertProWorkOrder(ProWorkOrder proWorkOrder);

    /**
     * 修改生产工单
     *
     * @param proWorkOrder 生产工单
     * @return 结果
     */
    public int updateProWorkOrder(ProWorkOrder proWorkOrder);

    /**
     * 工单排产
     */
    int arrangeWork(ProWorkOrder proWorkOrder, List<ProWorkTask> proWorkTasks);

    /**
     * 批量删除生产工单
     *
     * @param workOrderCodes 需要删除的生产工单主键集合
     * @return 结果
     */
    public int deleteProWorkOrderByWorkOrderCodes(List<String> workOrderCodes);

    /**
     * 删除生产工单信息
     *
     * @param workOrderCode 生产工单主键
     * @return 结果
     */
    public int deleteProWorkOrderByWorkOrderCode(String workOrderCode);

    /**
     * 通过 计划 删除 工单
     */
    public int deleteProWorkOrderByScheduleCode(String scheduleCode);
}
